Various data processing systems, such as customer relationship management systems, use several types of information. Two such types of information are reference information and transactional information. Transactional information identifies a particular transaction (e.g., such as an order placed by a customer). Transactional information contains references to reference information, which identifies various entities (e.g., such as products and customers) that are affected by or involved in the transaction identified by the transactional information.
Reference information can be modified over time. For example, a computer retailer may update the reference information describing a particular software product as new releases of that software become available. Similarly, if a customer changes her name or contact information, a retailer can update the reference information for that customer to identify the customer's new name and/or contact information.
Reference information can also be designed to expire or otherwise become ineffective over time. For example, a retailer may specify a seasonal sale price for a product, where the seasonal sale price is only effective for a limited time. Similarly, a contract employee may be employed for a limited time, which can be reflected by the reference information for that employee specifying a particular effectiveness period bounded by the employee's beginning and ending dates of employment.
Because of the variable nature of reference information over time, many data processing systems support functions to recreate the particular state of a particular entity described by the reference information at a specific point in time. For example, some systems provide a function such as auditing, which provides a user with information identifying how a particular entity described by reference information has been modified over time. Other functions can show the various time periods during which a particular entity described by the reference information was effective. Similar functions can be used to change reference information to a state that existed at another time (e.g., such as an “undo” or “redo” function or a “restore” function).
Currently, various data patterns are available to store information included within and/or associated with reference information. Typically, a different data pattern is used to store information for each specific function to be performed on the reference information. Thus, the same reference information may be represented by many different data patterns, each of which is only used to perform a single function. Unfortunately, maintaining the same reference information in multiple data patterns leads to confusion, inefficiency, and/or inconsistency. Accordingly, new techniques for maintaining reference information are desirable. Such techniques are also desirable for maintaining transactional information.